import { type Router } from 'vue-router'

// 提供一个机制来跨窗口（或 iframe）通信，让父窗口可以控制子窗口的路由，并且子窗口可以通知父窗口当前的路由状态
export function registryRouterChannel(router: Router) {
  window.addEventListener('message', (event) => {
    if (event.data?.type === 'route-change') {
      router.push(event.data.path)
    }
  })

  function notify(path: string) {
    window.parent.postMessage({ type: 'route-change', path }, '*')
  }

  window.parent.postMessage({ type: 'router-channel-connected' }, '*')

  return {
    notify
  }
}
